package com.lh.tams.service.input;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Service;

import com.lh.tams.dao.CaseDao;
import com.lh.tams.dao.system.PersonDao;
import com.lh.tams.domain.TamsCase;
import com.lh.tams.domain.TamsDept;
import com.lh.tams.domain.TamsPerson;
import com.lh.tams.util.DateUtil;
import com.lh.tams.util.ID;
import com.lh.tams.util.Status;
import com.lh.tams.util.db.CallBack;
import com.lh.tams.util.db.SqlTemplate;

/**
 * 导入案件
 * @author hc24
 * 
 */
@Service
public class ImportCase {
	private CaseDao caseDao;
	private PersonDao personDao;

	public void setCaseDao(CaseDao caseDao) {
		this.caseDao = caseDao;
	}
	
	public void setPersonDao(PersonDao personDao) {
		this.personDao = personDao;
	}


	/**
	 * 导入案件操作
	 */
	public void importCase(Date beginTime,Date endTime){
//		Calendar calendar=Calendar.getInstance();
//		calendar.setTime(new Date());
//		calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR)-8);
		
		StringBuilder sql=new StringBuilder();
		sql.append("select t1.*,t2.cjqk from jjdb t1 left join fkdb t2 on t1.jjdbh=t2.jjdbh where JJLXDM=2 AND JJDCLLXDM=1 and bjlbdm=30 and t2.ajlbbh=30");
		if(beginTime!=null){
			sql.append(" and t1.bjsj>=to_date('").append(DateUtil.format(beginTime, "yyyy-MM-dd HH:mm:ss")).append("','yyyy-mm-dd hh24:mi:ss')");	
		}
		if(endTime!=null){
			sql.append(" and t1.bjsj<=to_date('").append(DateUtil.format(endTime, "yyyy-MM-dd HH:mm:ss")).append("','yyyy-mm-dd hh24:mi:ss')");
		}
		sql.append(" order by t1.jjdbh");
		
		System.out.println("sql:"+sql.toString());
		SqlTemplate sqlTemplate=new SqlTemplate(sql.toString());
		sqlTemplate.execute(new CallBack() {
			public Object export(ResultSet rs) throws SQLException {
				List<TamsCase> list = new ArrayList<TamsCase>();
				int i=1;
				TamsPerson inPerson=personDao.query("122");
				while(rs.next()){
					
					if(i%20==0&&i!=0){
						caseDao.addBatch(list);//批量插入
						list=new ArrayList<TamsCase>();
					}
						
					TamsCase tcase=new TamsCase();
					tcase.setIdBgt(ID.next());
					tcase.setCaseNo(rs.getString("jjdbh"));//案件编号
					tcase.setAlarmName(rs.getString("bjrxm"));//报警人
					
					/*yfwxp:number(1,0)
					bjrxb:varchar2 
					接警时间：Date 
				
					0是男，1是女，null为未知
					0是危化，1不是，null为未知 */

					String bjrxb=rs.getString("bjrxb");
					if(bjrxb==null)
						tcase.setSex("未知");
					else if(bjrxb.equals(0))
						tcase.setSex("男");
					else
						tcase.setSex("女");
					
					tcase.setAlarmPhone(rs.getString("lxdh"));
					tcase.setAlarmAddress(rs.getString("zzdw"));
					tcase.setCaseAddress(rs.getString("afdd"));
					tcase.setIsDanger(rs.getInt("yfwxp")+1);//是否危化车辆
					tcase.setAlarmDate(rs.getTimestamp("bjsj"));
					tcase.setAlarmType("交通事故");
					tcase.setCaseContent(rs.getString("bjnr"));//案件概述
					tcase.setAlarmWay("系统导入");
					tcase.setDealType(Status.CASE_DEAL_NO);//处理类型是尚未确定
					tcase.setCheckType(Status.CHECK_TYPE_NO);//尚未提交审批
					tcase.setDistributeStatus(Status.CASE_DISTRIBUTE_NO);//未分配
					
					//出警备注
					boolean flag=false;;
					String cjqk=rs.getString("cjqk");
					//下一条记录
					while(rs.next()&&rs.getString("jjdbh").equals(tcase.getCaseNo())){
						cjqk =cjqk+"\n\n"+rs.getString("cjqk");
						flag=false;
					}
					//if(!flag)
						rs.previous();//返回上一条
					
					
					tcase.setRemark(cjqk);//出警备注
					
					
					TamsDept inDept=null;
					if(inPerson!=null){
						inDept=inPerson.getTamsDept();
					}
					
					tcase.setTamsPersonByInPerson(inPerson);//接警人
					tcase.setTamsDeptByInDept(inDept);//接警部门
					
					list.add(tcase);
					i++;
				}
				
				if(i<20){
					caseDao.addBatch(list);//批量插入
				}
				return null;
			}
		});
	}
	
}
